# 瞬移(好题)
# 2025/5/15

"""
这个题目可以理解为有一个环形数轴, 轴的值为[1, end]
一个点在这个数轴上移动, 从初始位置start开始, 每次从一个数组arr中选择两个数字的和作为移动的距离, 最后移动到end的为止的最小次数.
"""
from collections import deque


def min_times(end, arr):
    # 预处理数据, 计算所有可能的移动的距离
    dist = set()
    n = len(arr)
    for i in range(n):
        for j in range(n):
            dist.add((arr[i] + arr[j]) % end)  # FIXME 这里修改为和的mod即可从45%(其余为超时)->100%

    if end == 1:
        return 0

    visited = [False] * (end + 1)
    queue = deque([(1, 0)])  # (当前位置, 当前步数)
    visited[1] = True

    while queue:
        curr, steps = queue.popleft()
        for s in dist:
            nxt = (curr + s - 1) % end + 1
            if nxt == end:
                return steps + 1
            if not visited[nxt]:
                queue.append((nxt, steps + 1))
                visited[nxt] = True

    return -1

if __name__ == '__main__':
    _, end = map(int, input().split())
    arr = list(map(int, input().split()))
    print(min_times(end, arr))
